gusucode.com > LTE基带收发仿真系统matlab源码程序 > LTE baseband simulation/channel.m
function [recSymb Hcell] = channel(sendSymbAll,Hcell,h,SNRdB) % 功能:发端数据经过信道,到达接收端,并添加噪声 % 输入: % sendSymbAll:发端发送信号 % Hcell:频域信道响应 % h:时域信道响应 % SNRdB:信噪比[dB] % 输出: % recSymb:接收端收到的符号 % % Author: 程式小组(徐萌 张妙 张晓庆) % Date: 2010-07-11 % ========================================================== global LTE_par channelFreq = LTE_par.channelFreq; % 频域信道指示 true:频域信道 false:时域信道 addNoise = LTE_par.addNoise; % 噪声添加指示 ture:添加噪声 false:无噪声 FFT_SIZE = LTE_par.FFT_SIZE; % FFT变换点数 CP = LTE_par.CP; % 1个子帧内循环前缀长度 nOfdm = length(CP); % OFDM符号数 nTx = LTE_par.BS_par.nAnt; % BS天线数 nRx = LTE_par.UE_par.nAnt; % UE天线数 if channelFreq == true recSymb = zeros(nRx,FFT_SIZE,nOfdm); for k = 1:FFT_SIZE % 经过信道 for n = 1:nOfdm recSymb(:,k,n) = Hcell{k}*sendSymbAll(:,k,n); end end else % 时域信道 recSymb = zeros(nRx,(FFT_SIZE*nOfdm+sum(CP))); maxDelay = size(h,3); for iRx = 1:nRx for iTx = 1:nTx htemp = reshape(h(iRx,iTx,:),1,maxDelay); % filter函数要求输入的前两个参数维数不超过2 recSymb(iRx,:) = recSymb(iRx,:)+filter(htemp,1,sendSymbAll(iTx,:)); end end end % 添加噪声 if addNoise == true normNoise = 1/sqrt(2)*(randn(size(recSymb))+1i*randn(size(recSymb))); if channelFreq == true recSymb = recSymb+1/sqrt(10^(0.1*SNRdB))*normNoise; else recSymb = recSymb+1/sqrt(FFT_SIZE*10^(0.1*SNRdB))*normNoise; % OFDM调制导致的功率降低 end end